﻿using LinkyPOS.Class;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace LinkyPOS
{
    public partial class UrunTeslim : Form
    {
        public UrunTeslim()
        {
            InitializeComponent();
        }
        linkDataContext ly = new linkDataContext();
        siparisler2 s = new siparisler2();
        musteriler2 m = new musteriler2();
        urun u = new urun();
        Siparisdetaylari sp = new Siparisdetaylari();
        odemedurumu o = new odemedurumu();
        ArrayList urunlistesi = new ArrayList();
        ArrayList desc = new ArrayList();
        int eskilik = 0;
        private void UrunTeslim_Load(object sender, EventArgs e)
        {
            this.Location = new Point(0, 0);
            label11.Text = panel.magazakodu + "-";
            lblSiparisID.Text = panel.magazakodu + "-0000";
            
        }

        private void UrunTeslim_LocationChanged(object sender, EventArgs e)
        {
            this.Location = new Point(0, 0);
        }

        private void textBox8_TextChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();

                    List<siparisler2> lst = siparisler2.sipkodulikegetir(textBox8.Text);
                    foreach (var item in lst)
                    {
                        listBox1.Items.Add(item.Sipariskodu);
                    }
                              
            

        }

        private void button7_Click(object sender, EventArgs e)
        {
            kullanicilar k = new kullanicilar();
            ayarlar2 ay = new ayarlar2();


            if (ay.Genelislemidsi == txtIslemID.Text)
            {
                // burada siparişin kapatılma kodları yazılacak
                if (eskilik == 1)
                {
                    s.siparisdurumset2(o.durumget, s.SiparidID);

                    sp.tümdetayguncelle(s.SiparidID);

                }
                else
                {
                    s.siparisdurumset(o.durumget, s.SiparidID);

                    sp.tümdetayguncelle(s.SiparidID);

                }


            }

            this.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            pnlFinal.Visible = false;
            pnlOrta.Visible = false;
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (eskilik == 1)
            {
                o.durumget = 6;
                s.Odemetarihi = DateTime.Now;
            }
            else
            {
                o.durumget = 4;
                s.Odemetarihi = DateTime.Now;

            }

            if (radioButton2.Checked)
            {
                radioButton2.Checked = false;
            }

        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (eskilik == 1)
            {
                o.durumget = 7;
                s.Odemetarihi = DateTime.Now;
            }
            else
            {
                o.durumget = 5;
                s.Odemetarihi = DateTime.Now;

            }


            if (radioButton1.Checked)
            {
                radioButton1.Checked = false;
            }



        }

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                if (s.Durum == 1)
                {
                    pnlOrta.Visible = true;


                }
                else if (s.Durum == 2)
                {

                    
                    string[] kolonlar = { "durum" };
                    string[] degerler = { "4" };// günlük nakit teslimedilmemiş se bile ödemesi o güne yansır

                    dataCUD.guncelle("siparisler", kolonlar, degerler, "siparisID", s.SiparidID.ToString());
                    this.Close();
                }
                else if (s.Durum == 3)
                {
                    string[] kolonlar = { "durum" };
                    string[] degerler = { "5" }; // günlük visa teslimedilmemiş se bile ödemesi o güne yansır

                    dataCUD.guncelle("siparisler", kolonlar, degerler, "siparisID", s.SiparidID.ToString());
                    this.Close();
                }


            }
            catch (Exception d)
            {

                err2 er = new err2(d.ToString(), this.Name);
            }
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {


                s.Sipariskodu = listBox1.SelectedItem.ToString();
                s.siparisgetir(s.Sipariskodu);

                m.MusteriID = s.MusteriID;
                m.musterigetir();
                txtisim.Text = m.Isim;
                txtSoyisim.Text = m.Soyisim;
                txtTelefon.Text = m.Telefon;
                txtEposta.Text = m.Eposta;
                lblMusteriID.Text = "Musteri ID =" + m.MusteriID.ToString();
                lblSiparisID.Text = "Sipariş No =" + s.Sipariskodu;
                txtBakiye.Text = s.Toplambrut.ToString();
                txtiskonto.Text = s.Iskonto.ToString();
                txtNet.Text = s.Net.ToString();
                comboBox1.SelectedIndex = comboBox1.Items.IndexOf(s.Referans);
                int durum = s.Durum;

                if (s.Alimtarihi.ToShortDateString() == DateTime.Now.ToShortDateString())
                {
                    eskilik = 0;
                }
                else
                {
                    eskilik = 1;
                }
                if (durum == 1)
                {
                    button5.Text = "Ödeme Al";
                }
                else
                {
                    button5.Text = "Ödeme Alınmıştır  Siparişi kapatınız";
                }

                // burada ilgili siparis detaylarini listviewa ekliyoruz



                sepeteekle();



                panel1.Visible = false;


            }
            catch (Exception d)
            {

                err2 er = new err2(d.ToString(), this.Name);

            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtisim.Clear();
            txtSoyisim.Clear();
            txtTelefon.Clear();
            txtEposta.Clear();
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {


        }

        private void button2_Click(object sender, EventArgs e)
        {
            // seçili ürünün eksik teslimi

            if (listView1.SelectedItems.Count > 0)
            {

                for (int i = 0; i < listView1.SelectedItems.Count; i++)
                {
                    int ItemIndex = listView1.SelectedItems[i].Index;
                    string rakkam = listView1.Items[ItemIndex].SubItems[7].ToString();
                    int bir = rakkam.IndexOf('{');
                    int iki = rakkam.LastIndexOf('}');
                    sp.SiparisdetID = Convert.ToInt32(rakkam.Substring(bir + 1, (rakkam.Length - (bir + 2))));// siparisdetid yi veriyor
                    //--------------------------

                    sp.Durum = 1;
                    sp.tümdetayguncelle(sp.SiparisdetID);
                }

                sepeteekle();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (comboBox3.Visible == false)
            {
                panel2.Visible = true;
                comboBox3.Visible = true;
                button8.Visible = true;
                textBox1.Clear();
            }
            else
            {
                panel2.Visible = false;
                comboBox3.Visible = false;
                button8.Visible = false;
            }



        }

        private void button8_Click(object sender, EventArgs e)
        {
            switch (comboBox3.Text)
            {
                case "Yanlış Giriş Yapıldı":
                    o.durumget = 18;
                    break;
                case "Problemli Satış Ürünü Aldı Ödemesi Yapılmadı/İade Edildi":
                    if (s.Durum == 1)
                    {
                        // ödemesi yapılmadı
                        o.durumget = 19;
                    }
                    else if (s.Durum == 2)
                    {
                        // ödeme nakit yapılmıştı ve iade edildi
                        o.durumget = 20;
                    }
                    else if (s.Durum == 3)
                    {
                        // ödemesi kredi kartı ile yapılmıştı ve iade edildi
                        o.durumget = 21;
                    }

                    break;
                case "Problemli Satış Ürünü Aldı Bedeli Müşteriye Ödendi":
                    o.durumget = 22;
                    break;


                default:
                    MessageBox.Show("Lütfen Bir iptal Bildiriminde Bulunun");
                    return;
                    break;
            }

            s.siparisdurumset(o.durumget, s.SiparidID);
            sp.Durum = o.durumget;
            sp.Sipariskodu = s.Sipariskodu;
            sp.kodagoreguncelle();

            this.Close();

        }

        private void button4_Click(object sender, EventArgs e)
        {
            // buraya sepeti son hali ile tekrar bastıracak


            for (int i = 0; i < listView1.Items.Count; i++)
            {
                string hane1 = listView1.Items[i].SubItems[0].ToString();
                int bir = hane1.IndexOf('{');
                int iki = hane1.LastIndexOf('}');
                hane1 = hane1.Substring(bir + 1, (hane1.Length - (bir + 2)));

                string hane2 = listView1.Items[i].SubItems[1].ToString();
                bir = hane2.IndexOf('{');
                iki = hane2.LastIndexOf('}');
                hane2 = hane2.Substring(bir + 1, (hane2.Length - (bir + 2)));


                string hane3 = listView1.Items[i].SubItems[2].ToString();
                bir = hane3.IndexOf('{');
                iki = hane3.LastIndexOf('}');
                hane3 = hane3.Substring(bir + 1, (hane3.Length - (bir + 2)));

                // açıklama bölümünü burda veriyor
                string hane4 = listView1.Items[i].SubItems[3].ToString();
                bir = hane4.IndexOf('{');
                iki = hane4.LastIndexOf('}');
                hane4 = hane4.Substring(bir + 1, (hane4.Length - (bir + 2)));

                desc.Add(hane4);

                string hane5 = listView1.Items[i].SubItems[6].ToString();
                bir = hane5.IndexOf('{');
                iki = hane5.LastIndexOf('}');
                hane5 = hane5.Substring(bir + 1, (hane5.Length - (bir + 2)));


                string satir = hane1 + " " + hane2.Substring(0,4) + " " + hane3 + " " + hane4 + "  Adet" + hane5;

                urunlistesi.Add(satir);

            }
            string odemetipi = "";
            if (s.Durum == 1)
            {
                odemetipi = "Teslimde Alınacak";
            }
            else if (s.Durum == 2)
            {
                odemetipi = "Nakit";
            }
            else if (s.Durum == 3)
            {
                odemetipi = "Kredi Kartı";
            }
            context.yaziciyagonder(s.Sipariskodu, (txtisim.Text + " " + txtSoyisim.Text), txtTelefon.Text, urunlistesi, txtBakiye.Text, txtiskonto.Text, txtNet.Text, odemetipi,desc);

            Thread.Sleep(4000);

            context.yaziciyagonder(s.Sipariskodu, (txtisim.Text + " " + txtSoyisim.Text), txtTelefon.Text, urunlistesi, txtBakiye.Text, txtiskonto.Text, txtNet.Text, odemetipi, desc);



        }

        private void sepeteekle()
        {
            listView1.Items.Clear();

            SqlConnection sqlcon = connection.baglanti;
            SqlCommand sqlcmd = new SqlCommand("select * from siparisdetaylari where sipariskodu=@sipariskodu  ", sqlcon);
            sqlcmd.Parameters.AddWithValue("@sipariskodu", s.Sipariskodu);
            sqlcon.Open();
            SqlDataReader sdr = sqlcmd.ExecuteReader();
            while (sdr.Read())
            {
                ListViewItem list = new ListViewItem();
                u.Urunid = Convert.ToInt32(sdr["urunID"]);
                u.urungetir();

                list.Text = u.Urunadi;
                list.SubItems.Add(sdr["tip"].ToString()); // COLUMN 1
                list.SubItems.Add(sdr["netfiyat"].ToString()); // COLUMN 2    
                list.SubItems.Add(sdr["aciklama"].ToString());
                list.SubItems.Add(sdr["marka"].ToString());
                list.SubItems.Add(sdr["renk"].ToString());
                if (sdr["teslimdurum"].ToString() == "1") // eksik teslim durumu
                {
                    list.SubItems.Add("Eksik Teslim Edildi");

                }
                else if (sdr["teslimdurum"].ToString() == "2")// Tam Teslim Durumu
                {
                    list.SubItems.Add("Tamamen Teslim Edildi");
                }
                else if (sdr["teslimdurum"].ToString() == "0")
                {
                    list.SubItems.Add("Rafta Bekliyor");
                }
                else
                {
                    list.SubItems.Add("İptal");
                }
                list.SubItems.Add(sdr["siparisdetID"].ToString());

                listView1.Items.Add(list);

            }
            sqlcon.Close();
        }

        private void button9_Click(object sender, EventArgs e)
        {

            try
            {


                string[] kolonlar = { "teslimdurum" };
                string[] degerler = { "0" };
                dataCUD.guncelle("siparisdetaylari", kolonlar, degerler, "sipariskodu", s.Sipariskodu);

                //siparisdetaylari spd = ly.siparisdetaylaris.FirstOrDefault(k => k.sipariskodu == sp.Sipariskodu); 

                //spd.teslimdurum=0;

                // ly.SubmitChanges();
                sepeteekle();
            }
            catch (Exception d)
            {

                err2 err = new err2(d.ToString(), this.Name);
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (radioButton1.Checked == false && radioButton2.Checked == false )
            {
                MessageBox.Show("Bir Ödeme Tipi Seçmelisiniz");
                return;
            }

            //pnlOrta.Visible = false;
            pnlFinal.Visible = true;

        }

        private void button10_Click(object sender, EventArgs e)
        {
            ayarlar2 ar = new ayarlar2();
            if (textBox1.Text == ar.Adminsifresi)
            {
                panel2.Visible = false;
                textBox1.Clear();
            }
        }

        private void txtIsimSoyisim_TextChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        
                    List<siparisler2> lst2 = siparisler2.sipkodulikegetirisim(txtIsimSoyisim.Text);
                    foreach (var item in lst2)
                    {
                        listBox1.Items.Add(item.Sipariskodu);
                    }
                   
              
        }

        private void txtPhone_TextChanged(object sender, EventArgs e)
        {

            listBox1.Items.Clear();

       
                    List<siparisler2> lst3 = siparisler2.sipkodulikegetitelefon(txtPhone.Text);
                    foreach (var item in lst3)
                    {
                        listBox1.Items.Add(item.Sipariskodu);
                    }
         
         

        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void label6_Click(object sender, EventArgs e)
        {

        }
    }
}
